package cn.tedu;

import java.io.*;

public class IOUtils {
    public static void close(Closeable a) {

        if (a != null) {//防止空指针异常
            try {
                a.close();
                ;
            } catch (IOException x) {
                x.printStackTrace();
            }
        }
    }
    private static void copy(String from,String to)  {
        /**
         * 完成文件复制
         * 参数:
         * from源文件 的路径
         * to目标文件 的路径
         */
        InputStream in=null;
        OutputStream out=null;
        try{
            //1, 准备读取流和写出流 -- 读取from文件,,把数据写出到to里
            in = new BufferedInputStream(new FileInputStream(from));
            out = new BufferedOutputStream(new FileOutputStream(to));

            //TODO 批量读写--优化单字节读写的效率
            byte[] bs = new byte[8192];//缓冲数据的数组,可以自定义容量
            //模拟底层,使用容量是8192个字节.8*1024字节=8K的量
            //        int data = in.read(bs);//批量读,优化了单个字节读取的效率
            //        out.write(bs);//批量写出,优化了单个字节写出的效率

            //TODO 2,开始读和写
            int b = 0 ; //记录读到的数据的 长度
            while ( ( b = in.read(bs) ) != -1 ) {//有数据就读,没数据时返回-1  -1代表空
                //System.out.println(b);//打印读到的数据的 长度
                out.write(bs);//把读到的数据写出去
            }
        }catch(IOException x){
            x.printStackTrace();
        }finally {
            //3,释放资源
            IOUtils.close(in);
            IOUtils.close(out);
        }

    }
}
